#pragma once
#include "Socket.h"
#include "EventLoop.h"
#include "Channel.h"
#include "InetAddress.h"
class EventLoop;
class Connection
{

public:
    using func_t  = std::function<void(Connection*)>;
private:
    /* data */
    EventLoop *loop_;
    Socket *clientsock_;
    Channel *clientchannel_;

    func_t closeCallBack_;
    func_t errorCallBack_;

public:
    Connection(EventLoop *loop, Socket *clientsock);
    ~Connection();
    int fd() const;
    std::string getiP() const;
    uint16_t getport() const;

    void closecallback(); // TCP断开连接的回调函数 ，提供channel 回调
    void errorcallback(); // TcP连接错误的回调函数，提供Channel 回调

    // 设置回调函数
    void setCloseCallBack(func_t  func); // TCP断开连接的回调函数 ，提供channel 回调
    void setErrorCallBack(func_t  func); // TcP连接错误的回调函数，提供Channel 回调

};
